package main

import "fmt"

//go函数可以返回多个值
func test1() (a, b, c int) {
	return 1, 2, 3
}

func test() {
	//变量多重初始化
	a, b := 10, 20

	//传统方法交换2个变量的值
	var tmp int //利用中间变量交换
	tmp = a     //此时tmp赋值后等于10
	a = b       //a重新赋值后等于20
	b = tmp     //此时赋值后b=10
	fmt.Printf("a=%d, b=%d\n", a, b)

	// go语言交换2个变量的值
	i, j := 10, 20
	i, j = j, i
	fmt.Printf("i=%d, j=%d\n", i, j)

	//下划线(_)是匿名变量, 匿名变量会丢弃数据不处理,_匿名变量配合函数返回值使用,才有优势
	tmp, _ = i, j
	fmt.Println("tmp=", tmp)

	var c, d, e int
	c, d, e = test1() //return 1,2,3
	fmt.Printf("c=%d,d=%d,e=%d\n", c, d, e)

	//此时只想用其中1个,就要用_匿名变量
	var m int
	_, m, _ = test1() //return 1,2,3
	fmt.Printf("m=%d\n", m)

}
func main() {
	test()
}
